array.at()¡O es para node.js o JavaScript!
Esta es una propuesta bastante nueva . La idea detrás de esto es:
Una propuesta de TC39 para agregar un método .at() a todas las clases indexables básicas (Array, String, TypedArray)
Durante muchos años, los programadores han solicitado la capacidad de realizar una "indexación negativa" de JS Arrays, como se puede hacer con Python. Es decir, solicitar la capacidad de escribir
arr[-1]en lugar dearr[arr.length-1], donde los números negativos cuentan hacia atrás desde el último elemento.Desafortunadamente, el diseño de lenguaje de JS hace que esto sea imposible. La sintaxis [] no es específica de matrices y cadenas; se aplica a todos los objetos. Hacer referencia a un valor por índice, como
arr[1], en realidad solo se refiere a la propiedad del objeto con la clave "1", que es algo que cualquier objeto puede tener. Entoncesarr[-1]ya "funciona" en el código actual, pero devuelve el valor de la propiedad "-1" del objeto, en lugar de devolver un índice que cuenta hacia atrás desde el final.En cambio, esta propuesta adopta un enfoque más común y sugiere agregar un método
.at()a Array, String y TypedArray, que toma un valor entero y devuelve el elemento en ese índice, con la semántica de números negativos como se describe anteriormente.
Así que somethingIndexed.at(n) es esencialmente lo mismo que somethingIndexed[n] , excepto que n puede ser negativo.
.at(-1) es equivalente a somethingIndexed[somethingIndexed.length - 1] .
.at(-2) es equivalente a somethingIndexed[somethingIndexed.length - 2] .
Y así.
const arr = ['foo', 'bar', 'baz']; console.log(arr.at(-1) === arr[arr.length - 1]);Pero es una propuesta bastante nueva. Eventualmente, se integrará en todos los entornos modernos (incluidos Node y los navegadores), pero dado que es tan nuevo (y aún no está en la etapa 4), no debe contar con que sea compatible todavía. Úselo solo en el código de producción si incluye un polyfill .